const express = require('express')
const cors = require('cors')
const morgan = require('morgan')
const path = require('path')
const fs = require('fs')
const router = require('./router')
const { startScheduledTasks } = require('./scripts/scheduleTasks')


const app = express()

// 确保上传目录存在
const uploadsDir = path.join(__dirname, 'uploads');
if (!fs.existsSync(uploadsDir)) {
  fs.mkdirSync(uploadsDir, { recursive: true });
  console.log('创建上传目录:', uploadsDir);
}

// 解析 JSON 格式数据
app.use(express.json())
// 解析 url-encoded 格式数据
app.use(express.urlencoded({ extended: true }))
// 静态资源服务
app.use(express.static('public'))
// 静态资源服务 - 添加 uploads 目录的访问
app.use('/uploads', express.static(path.join(__dirname, 'uploads')))
// 跨域
app.use(cors())
// 日志
app.use(morgan('dev'))
// 挂载路由
app.use('/api/v1', router)

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack)
  res.status(500).json({
    code: 500,
    msg: '服务器错误',
    error: err.message
  })
})

const PORT = process.env.PORT || 3000

app.listen(PORT, () => {
  console.log(`服务器运行在端口 ${PORT}`)

  // 启动定时任务
  startScheduledTasks()
  console.log('定时任务已初始化')
})
